/*
The Camera class deals with translating viewing vectors and drawing the sky background.
*/

#ifndef GUARD_Camera_h
#define GUARD_Camera_h

#include "Vector3.h"
#include <GL/glut.h>
#include "Player.h"

const float xLeadAmt = 300;

class Camera{
private:
	GLUquadric* sphere;
	GLuint skyTexture;
	GLuint planetTexture;
	Vector3 lookFrom;
	Vector3 lookAt;
	Vector3 viewUp;
	float fov;

	void initializeBackground();
public:

	Camera();
	Camera(Vector3 lookFrom, Vector3 lookAt, Vector3 viewUp, float fov);

	void update(Player& player);
	void drawSky();

	Vector3 getLookFrom() const;
	Vector3 getLookAt() const;
	Vector3 getViewUp() const;
	float getFOV() const;

	void setLookFrom(Vector3 lfp);
	void setLookAt(Vector3 lap);
	void setViewUp(Vector3 viewUp);
	void setFOV(float fovAngle);
};

#endif